package com.budwk.app.sqfwDoc.codeGeneratorV2.test.completeFlow;

import com.alibaba.fastjson.JSONObject;
import com.budwk.app.sqfw.constants.SqfwFormSummaryConstants;
import com.budwk.app.sqfw.enums.DownLoadFileNameEnum;
import com.budwk.app.sqfwDoc.codeGenerator.pdfGenerate.AbstractCustomerPdfCreateField;
import com.budwk.app.sqfwDoc.codeGeneratorV2.fileParam.CompleteFlowPdfParamForController;
import com.budwk.app.sqfwDoc.codeGeneratorV2.fileParam.PdfGenerateParam;
import com.budwk.app.sqfwDoc.codeGeneratorV2.generate.BasePdfGenerator;
import com.budwk.app.sqfwDoc.codeGeneratorV2.pdfService.CompleteFlowCommonPdfService;
import com.budwk.app.sqfwDoc.codeGeneratorV2.result.GeneratorPdfWordResult;
import com.budwk.app.sqfwDoc.codeGeneratorV2.test.RefuseClassifyPdfDTO;
import com.budwk.app.sqfwDoc.codeGeneratorV2.test.RefuseClassifyPdfGenerator;
import com.google.common.collect.Lists;
import org.nutz.ioc.loader.annotation.IocBean;

import java.util.List;

/**
 * @author ZY.Wang
 * @since 2024/1/25
 * <p>
 * 垃圾分类调查 RefuseClassify
 */
@IocBean
public class SqfwRefuseClassifyPdfService extends CompleteFlowCommonPdfService {


    @Override
    public void createPdfAndMsg(CompleteFlowPdfParamForController paramForController) {
        super.createPdfAndMsg(paramForController);
    }

    @Override
    public void reCreatePdfAndMsg(CompleteFlowPdfParamForController paramForController) {
        super.reCreatePdfAndMsg(paramForController);
    }

    @Override
    public GeneratorPdfWordResult createPdfSync(CompleteFlowPdfParamForController paramForController) {
        return super.createPdfSync(paramForController);
    }

    /**
     * 获取用户自定义字段 代码生成器已经自动填充
     * 无需特殊修改
     *
     * @param paramData json字符串
     * @return 结果
     */
    @Override
    protected AbstractCustomerPdfCreateField getCustomerPdfField(String paramData) {
        return JSONObject.parseObject(paramData, RefuseClassifyPdfDTO.class);
    }

    /**
     * 允许用户自定义填充在创建pdf时所提供的数据
     *
     * @param pdfGenerateParam 创建pdf所提供的数据
     */
    @Override
    protected void customerPopularPdfGenerateParam(PdfGenerateParam pdfGenerateParam) {

    }

    /**
     * 在这里设置生成pdf的所有generator
     *
     * @param pdfGenerateParam 创建pdf的参数
     * @return 生成pdf的generator合集
     */
    @Override
    protected List<BasePdfGenerator> getPdfGenerator(PdfGenerateParam pdfGenerateParam) {
        // 注意！在PdfGenerateParam中如果使用到了pdfCreateConfigList请务必判断是否为null以及为null时返回的generator
        List<BasePdfGenerator> generatorList = Lists.newArrayList();
        // 在这里添加自己的generator
        // 例如 generatorList.add(new RefuseClassifyPdfGenerator());
        generatorList.add(new RefuseClassifyPdfGenerator());
        return generatorList;
    }

    /**
     * 设置下载文件名称
     * 注意！注意！注意！不用加上文件后缀
     * 可以参照{@link DownLoadFileNameEnum}
     *
     * @param pdfGenerateParam 创建pdf提供的参数
     * @return 文件名称
     */
    @Override
    protected String getDownloadFileName(PdfGenerateParam pdfGenerateParam) {
        return DownLoadFileNameEnum.RUBBISH_CLASS_PDF.getName();
    }

    /**
     * 获取formSummary中的类型 例如安全排查，垃圾分类等，请参照
     * {@link SqfwFormSummaryConstants}
     * !!!当然也根据实际开发来进行填充，使用字典code可能会更加合理一些
     *
     * @return summary类型
     */
    @Override
    protected String getSummaryType() {
        return SqfwFormSummaryConstants.refuse_classify;
    }
}
